package com.neusoft.hifly.message.msg.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.neusoft.hifly.message.msg.entity.MsgObj;

/**
 * Title: 消息服务
 * <p>
 * Description: 站内信 Dao
 * <p>
 * Copyright: 2019
 * <p>
 * Company: 东软汉枫
 *
 * @author lh_neu
 * @version 1.0.0
 */
@Mapper
public interface IMsgDao extends BaseMapper<MsgObj> {

	/**
	 * 删除对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param logicId
	 *            对象ID
	 */
	void deleteByLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("logicId") long logicId);

	/**
	 * 删除对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param objLogicId
	 *            业务表单的ID
	 */
	void deleteByObjLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("objLogicId") long objLogicId);

	/**
	 * 根据逻辑id查询对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param logicId
	 *            id
	 * @param isGetReceiveNames
	 *            是否查看接收人信息
	 * @return 对象
	 */
	MsgObj getByLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("logicId") long logicId, @Param("isGetReceiveNames") boolean isGetReceiveNames);

	/**
	 * 统计所有
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户ID
	 * @return 数量
	 */
	int countAll(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId);

	/**
	 * 查询所有对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @return 对象集合
	 */
	List<MsgObj> findAll(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId);

	/**
	 * 统计未读消息
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param map
	 *            参数
	 * @return 数量
	 */
	int count(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("map") Map<String, Object> map);

	/**
	 * 搜索未读消息
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param page
	 *            分页
	 * @param map
	 *            参数
	 * @return 消息
	 */
	List<MsgObj> search(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			com.baomidou.mybatisplus.plugins.Page<MsgObj> page, @Param("map") Map<String, Object> map);
}